package cn.org.xuanguang.kepler.hormos.orm.tenant;

/**
 * TenantFactory 接口的主要作用，适用于获取当前的租户ID，和spring配合使用
 * 并在数据新增、删除、修改 和 查询的时候，会自动带上 TenantFactory "生产" 的数据。
 * 0.4.1 全局租户id模式，即指定了具体的租户id，那么该租户id将作为默认租户id，
 */
public interface TenantFactory {
    /**
     * getTenantIds 要求返回一个数组，原因有如下场景：
     * <p>
     * 场景1：租户对自己的数据进行增删改查，返回的 Object[] 数组只有租户自己的 ID 就可以了。
     * 场景2：租户可以对自己，以及其他租户（比如下级租户）的数据进行增删改查，那么要求返回的 Object[] 必须包含其他租户的 ID。比如某个数据列表， 除了显示租户自己的数据以外，还包含下级租户的数据，这种场景则要求 getTenantIds 返回多个值。
     * 场景3：忽略租户条件，由代码自定义条件查询，此项要求 getTenantIds 返回 null 或者 空数组。
     *
     * @return
     */
    Object[] getTenantIds();
}
